<?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

class establecimientom extends CI_Model {

    public function __construct() {
        $this->load->database();
    }

    public function obtenerDatos($datos, $idEstablecimiento) {
        $query = "SELECT $datos FROM establecimiento WHERE id_establecimiento='$idEstablecimiento'";
        //   echo $query;
        return $this->db->query($query)->result();
    }

    public function obtenerDatosBasicos($idEstablecimiento) {
        $query = "SELECT e.*, p.nombre nombre_pais FROM establecimiento e, pais p WHERE  e.id_pais=p.id_pais and id_establecimiento='$idEstablecimiento'";
        //   echo $query;
        return $this->db->query($query)->result();
    }

    public function obtenerEstablecimientoByUsuario($idEstablecimiento, $idUsuario) {
        $query = "SELECT e.id_establecimiento,e.nombre_establecimiento,eu.rol,e.id_pais,e.moneda from establecimiento_x_usuario eu, establecimiento e WHERE eu.id_establecimiento='$idEstablecimiento' AND eu.id_usuario='$idUsuario' AND e.id_establecimiento='$idEstablecimiento' AND e.cuenta_activa='1' and eu.eliminado=0";
        //   echo $query;
        return $this->db->query($query)->result();
    }

    public function obtenerOcupacion($idEstablecimiento, $dia, $criterios) {
        $query = "select count(*) cantidad from reserva r,cuarto cu, categoria ca, reserva_x_cuarto rc where rc.id_reserva=r.id_reserva and cu.id_cuarto=rc.id_cuarto and ca.id_categoria=cu.id_categoria and  r.id_establecimiento='$idEstablecimiento' and r.estatus<>'bloqueado'";
        $query.=(!empty($criterios['desde'])) ? " AND r.fecha_ingreso <= '$dia'" : " ";
        $query.=(!empty($criterios['hasta'])) ? " AND r.fecha_salida > '$dia'" : " ";
        $query.=(!empty($criterios['categoria'])) ? " AND ca.id_categoria = '{$criterios['categoria']}'" : " ";
        $query.=(!empty($criterios['habitacion'])) ? " AND cu.id_cuarto = '{$criterios['habitacion']}'" : " ";
        //  echo $query."<br>";
        return $this->db->query($query)->result();
    }

    public function obtenerOcupacionConBloqueos($idEstablecimiento, $dia, $criterios) {
        $query = "select count(*) cantidad from reserva r,cuarto cu, categoria ca, reserva_x_cuarto rc where rc.id_reserva=r.id_reserva and cu.id_cuarto=rc.id_cuarto and ca.id_categoria=cu.id_categoria and  r.id_establecimiento='$idEstablecimiento'";
        $query.=(!empty($criterios['desde'])) ? " AND r.fecha_ingreso <= '$dia'" : " ";
        $query.=(!empty($criterios['hasta'])) ? " AND r.fecha_salida > '$dia'" : " ";
        $query.=(!empty($criterios['categoria'])) ? " AND ca.id_categoria = '{$criterios['categoria']}'" : " ";
        $query.=(!empty($criterios['habitacion'])) ? " AND cu.id_cuarto = '{$criterios['habitacion']}'" : " ";
        //  echo $query."<br>";
        return $this->db->query($query)->result();
    }

    public function obtenerTotalHabitaciones($idEstablecimiento, $criterios) {
        $query = "select count(*) cantidad from cuarto  cu, categoria ca where cu.id_categoria=ca.id_categoria and ca.id_establecimiento='$idEstablecimiento' and ca.eliminado=0 and cu.eliminado=0";
        $query.=(!empty($criterios['categoria'])) ? " AND ca.id_categoria = '{$criterios['categoria']}'" : " ";
        $query.=(!empty($criterios['habitacion'])) ? " AND cu.id_cuarto = '{$criterios['habitacion']}'" : " ";
        //    echo $query."<br>";
        return $this->db->query($query)->result();
    }

    public function aumentarNumeroFactura() {
        $query = "update establecimiento set ultimo_numero_factura=ultimo_numero_factura+1 where id_establecimiento='{$_SESSION["establecimiento"]["id_establecimiento"]}'";
        return $this->db->query($query);
    }

    public function validarEmail($email) {
        $query = "select count(*) cantidad from establecimiento where email='$email'";
        return $this->db->query($query)->result();
    }

    public function crearEtablecimiento($nombre_establecimiento, $paginaWeb, $email, $fecha_vencimiento) {
        $query = "Insert into establecimiento (nombre_establecimiento,pagina_web,email,ultimo_numero_factura,fecha_vencimiento) values('$nombre_establecimiento','$paginaWeb','$email',0,'$fecha_vencimiento')";
        return $this->db->query($query);
    }

    public function validarDatos($idEstablecimiento, $idUsuario) {
        $query = "SELECT count(*) cantidad  from establecimiento_x_usuario eu, establecimiento e WHERE eu.id_establecimiento=e.id_establecimiento AND eu.id_usuario='$idUsuario' AND e.id_establecimiento='$idEstablecimiento' AND e.cuenta_activa='0'";
        //   echo $query;
        return $this->db->query($query)->result();
    }

    public function activarCuenta($idEstablecimiento) {
        $query = "Update establecimiento set cuenta_activa='1' where id_establecimiento='$idEstablecimiento'";
        //   echo $query;
        $this->db->query($query);
    }

    public function actualizarFechaVencimiento($idEstablecimiento, $tiempo) {
        $query = "Update establecimiento set fecha_vencimiento=DATE_ADD(fecha_vencimiento, INTERVAL $tiempo DAY) where id_establecimiento='$idEstablecimiento'";
        $this->db->query($query);
    }

    public function actualizarFechaVencimiento2($idEstablecimiento, $tiempo) {
        $query = "Update establecimiento set fecha_vencimiento=DATE_ADD(now(), INTERVAL $tiempo DAY) where id_establecimiento='$idEstablecimiento'";
        $this->db->query($query);
    }

    public function contarEstablecimientos($criterios) {
        $query = "Select count(*) cantidad from establecimiento e,cuenta_x_usuario cu
            where e.id_establecimiento=cu.id_establecimiento ";
        $query.=(!empty($criterios['nombre'])) ? "AND e.nombre_establecimiento like '%{$criterios['nombre']}%'" : " ";
        $query.=(!empty($criterios['pais'])) ? " AND e.id_pais='{$criterios['pais']}'" : " ";
        $query.=(!empty($criterios['estatus'])) ? " AND e.fecha_vencimiento<='{$criterios['estatus']}'" : " ";
        $query.=(!empty($criterios['fechaCreacionDesde'])) ? " AND cu.fecha_creacion >= '{$criterios['fechaCreacionDesde']}'" : " ";
        $query.=(!empty($criterios['fechaCreacionHasta'])) ? " AND cu.fecha_creacion <= '{$criterios['fechaCreacionHasta']}'" : " ";
        //   echo $query;
        return $this->db->query($query)->result();
    }

    public function obtenerEstablecimientos($filasPorPagina, $inicio, $criterios) {
        $query = "Select * from establecimiento e,cuenta_x_usuario cu
            where e.id_establecimiento=cu.id_establecimiento ";
        $query.=(!empty($criterios['nombre'])) ? "AND e.nombre_establecimiento like '%{$criterios['nombre']}%'" : " ";
        $query.=(!empty($criterios['pais'])) ? " AND e.id_pais='{$criterios['pais']}'" : " ";
        $query.=(!empty($criterios['estatus'])) ? " AND e.fecha_vencimiento<='{$criterios['estatus']}'" : " ";
        $query.=(!empty($criterios['fechaCreacionDesde'])) ? " AND cu.fecha_creacion >= '{$criterios['fechaCreacionDesde']}'" : " ";
        $query.=(!empty($criterios['fechaCreacionHasta'])) ? " AND cu.fecha_creacion <= '{$criterios['fechaCreacionHasta']}'" : " ";
        $query.=" order by e.cuenta_activa DESC LIMIT $inicio,$filasPorPagina";
        //   echo $query;
        return $this->db->query($query)->result();
    }

    public function obtenerEstablecimientosYPermisos($filasPorPagina, $inicio, $criterios) {
        $query = "Select e.*,p.*,cu.* from establecimiento e
            left join permiso p on
            p.id_establecimiento=e.id_establecimiento
            left join cuenta_x_usuario cu on 
            e.id_establecimiento=cu.id_establecimiento where true ";
        $query.=(!empty($criterios['nombre'])) ? "AND e.nombre_establecimiento like '%{$criterios['nombre']}%'" : " ";
        $query.=(!empty($criterios['pais'])) ? " AND e.id_pais='{$criterios['pais']}'" : " ";
        $query.=(!empty($criterios['estatus'])) ? " AND e.fecha_vencimiento<='{$criterios['estatus']}'" : " ";
        $query.=(!empty($criterios['fechaCreacionDesde'])) ? " AND cu.fecha_creacion >= '{$criterios['fechaCreacionDesde']}'" : " ";
        $query.=(!empty($criterios['fechaCreacionHasta'])) ? " AND cu.fecha_creacion <= '{$criterios['fechaCreacionHasta']}'" : " ";
        $query.="order by cu.fecha_creacion DESC LIMIT $inicio,$filasPorPagina";
        //   echo $query;
        return $this->db->query($query)->result();
    }

    public function setLogo($idEstablecimiento, $logo) {
        $query = "Update establecimiento set logo='$logo' where id_establecimiento='$idEstablecimiento'";
        $this->db->query($query);
    }

    public function setMoneda($idEstablecimiento, $id_moneda) {
        $query = "Update establecimiento set moneda='$id_moneda' where id_establecimiento='$idEstablecimiento'";
        $this->db->query($query);
    }

    public function actualizarFromMotor($idEstablecimiento, $politica_cancelacion, $descripcion_impuestos_cargos, $check_in, $check_out, $facebook) {
        $query = "Update establecimiento set politica_cancelacion='$politica_cancelacion', descripcion_impuestos_cargos='$descripcion_impuestos_cargos', check_in='$check_in', check_out='$check_out', link_facebook='$facebook' where id_establecimiento='$idEstablecimiento'";
        $this->db->query($query);
    }

    public function setCaja($caja, $idEstablecimiento) {
        $query = "Update establecimiento set caja='$caja' where id_establecimiento='$idEstablecimiento'";
        $this->db->query($query);
    }

    public function getIngresosReservaDia($dia, $idEstablecimiento) {
        $query = "SELECT ir.valor,ir.fecha,u.nombre_completo,ir.descripcion,r.id_reserva from reserva r
                  join ingreso_reserva ir on 
                  r.id_reserva=ir.id_reserva
                  join usuario u on
                  u.id_usuario=r.usuario_creacion where
                  r.id_establecimiento='$idEstablecimiento' and
                  ir.fecha >= '$dia 00:00:00' and
                  ir.fecha <= '$dia 23:59:59' and
                  ir.modo_pago='efectivo' order by ir.fecha";
        return $this->db->query($query)->result();
    }

    public function getIngresosExtraxDia($dia, $idEstablecimiento) {
        $query = "SELECT vps.total_venta,vps.impuesto, vps.fecha,u.nombre_completo,vps.descripcion from cliente c
                  join venta_producto_servicio vps on 
                  c.id_cliente=vps.id_cliente 
                  join usuario u on
                  u.id_usuario=vps.usuario_encargado where
                  c.id_establecimiento='$idEstablecimiento' and
                  vps.estatus='Pagado' and
                  vps.fecha >= '$dia 00:00:00' and
                  vps.fecha <= '$dia 23:59:59' and 
                  vps.modo_pago='Efectivo' order by vps.fecha";
        return $this->db->query($query)->result();
    }

}